package com.neuedu.corejava.ch12;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;

public class MyFileWriter {

	public static void main(String[] args) {
		charWrite();
	}

	public static void charWrite() {
		// 编写一个程序，向c:/temp/abc.txt 写入100行“hello file”；

		File file = new File("c:/temp/abc.txt");
		file.getParentFile().mkdir();
		FileWriter fileWriter = null;
		try {
			if (file.exists()) {
				// file.delete();
				// file.createNewFile();
				// System.out.println("删除文件成功");
			} else {
				file.createNewFile();
			}
			System.out.println("创建文件成功");
			fileWriter = new FileWriter(file, true);// 以追加方式打开文件流:注意：默认参数为false，会清空原有的内容，重写写入数据
			for (int i = 0; i < 100; i++) {
				String str = "你好！卢本伟 \r\n";
				fileWriter.write(str);// 字符流可以使用char数组或字符串进行输出数据
				fileWriter.flush();
			}

		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (fileWriter != null) {
				try {
					fileWriter.close();// 调用close方法前会默认调用flush刷新缓存
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

	}

	public static void byteWrite() {
		// 编写一个程序，向c:/temp/abc.txt 写入100行“hello file”；
		File file = new File("c:/temp/abc.txt");
		file.getParentFile().mkdir();// 创建文件目录
		FileOutputStream outputStream = null;

		try {
			// 以字节流形式写文件
			if (file.exists()) {
				file.delete();
				System.out.println("删除文件成功");
			}
			file.createNewFile();// 创建新文件
			System.out.println("创建文件成功");
			outputStream = new FileOutputStream(file);
			for (int i = 0; i < 100; i++) {
				String str = "Hello file" + i + "\r\n";// \r\n--换行符
				byte[] b = str.getBytes();// 字节流写数据时，需要把数据转换成字节数组
				outputStream.write(b);// 把字节数组写入到文件中（从程序输出到文件）
				outputStream.flush();// 强制刷新缓存，把数据输出到文件中
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (outputStream != null) {
				try {
					outputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}
